<template>
  <div class="mui-numbox" data-numbox-min="1" data-numbox-max="10">
    <button class="mui-btn mui-btn-numbox-minus" type="button">-</button>
    <input
      id="test"
      class="mui-input-numbox"
      type="number"
      value="1"
      ref="nobox"
      @change="countChanged"
    />
    <button class="mui-btn mui-btn-numbox-plus" type="button">+</button>
  </div>
</template>

<script>
// 导入mui,从而支持初始化数字框
import mui from "../../../lib/mui/js/mui.js";
export default {
  data() {
    return {};
  },
  methods: {
    /* changed(){
      const val = this.$refs.nobox.value
      console.log('数量改变'+val)
    } */
    countChanged() {
      // 获取选择的商品数量
      const val = this.$refs.nobox.value;
      // console.log("数量改变" + val);
      // 每当nobox子组件中的count变化之后，要立即把最新的数量之，传递给goodsinfo父组件，
      // 这样，每当我们点击【加入购物车】按钮的时候，就能立即把最新的count值，同步到购物车的徽标上
      // 这样就涉及到了父子组件之间的传值，这是子组件向父组件传值
      this.$emit("func", parseInt(val));
    },
  },
  mounted() {
    // console.log(this.max);
    // 当组件挂载到页面中子厚,去初始化数字框
    mui(".mui-numbox").numbox();
  },
  // 接收父组件传过来的库存量 max
  props: ["max"],
  watch: {
    // 使用场景:监听单个虚拟的数据
    // 当组件刚被渲染出来的时候,Ajax值还没传过来,所以是undefined
    // 当Ajax数据获取完毕之后,数据发生变化之后,数据就变回去了
    max: function (newval, oldval) {
      // 不论外界传递给 nobox 的 max 值到底是什么
      // 最终,最后传递的那个 max 值,肯定是一个合法的数值
      // console.log(newval + "---" + oldval);
      // 每当监听到max值的改变,不论这个值是否合法,我们都重新为数字框,使用 JS API
      // 来手动设置最大值
      mui(".mui-numbox").numbox().setOption("max", newval);
    },
  },
};
</script>

<style lang="scss" scoped>
</style>